home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -serious- / programming / other / tandem / teaching / 35.asm < prev    next >
Assembly Source File  |  1999-09-06  |  3KB  |  90 lines

  1. * 35.asm   TLReqchoose        version 0.01   8.6.99
  2.  
  3.  
  4.  include 'Front.i'        ;*** change to Tandem.i to step thru TL's ***
  5.  
  6.  
  7. ; TLReqchoose puts up a requester to allow the user to select from
  8. ; several choices. The idea is to put a series of strings: a header,
  9. ; and at least 1 choice, in strings, and set D0 to the no. of the 1st
  10. ; string, and then let D1 be the number of choices. The requester is
  11. ; adjusted to accommodate the operative font size.
  12.  
  13. ; The user chooses by clicking a button, or pressing the function key
  14. ; on the button. Note also that the user can press Help, as I set up
  15. ; help in xxp_Help. This can be cleared when finished with.
  16.  
  17. ; All tandem.library requesters have built-in help, but you can over-ride
  18. ; that by using xxp_Help, as above. You can also arrange fo a "Guide"
  19. ; button that opens a specified Amiga.guide at a specified node if clicked.
  20.  
  21. ; Alternately in TLReqchoose you can set D1 to 0, when D0 is ignored, and
  22. ; the requester simply asks the user to acknowledge whatever is in buffer.
  23. ; Both types are demonstrated below. (In the MACRO, simply omit parameters).
  24.  
  25. ; The user chooses by clicking a button, or pressing a function key. The
  26. ; choice (1+) is returned in D0. If Reqchoose fails (because the requester
  27. ; is too big) then it returns D0=0.
  28.  
  29. ; You cannot call TLKeyboard or the TL routines that use windows or fonts,
  30. ; unless you first call TLWindow (or TLReqchoose/Info/input - not show).
  31. ; That is, everything gets initialised by opening a window. The requesters
  32. ; are in fact windows, so they initialise things is called.
  33.  
  34.  
  35. strings: dc.b 0
  36. st_1: dc.b 'Demonstrate TLreqchoose',0 ;1
  37.  dc.b 'Choose from these buttons:',0 ;2
  38.  dc.b 'This is a button!',0 ;3
  39.  dc.b 'And this is another!',0 ;4
  40.  dc.b 'And yet a third!',0 ;5
  41.  dc.b '(A last choice)',0 ;6
  42. st_7: dc.b 'Times.font',0 ;7
  43.  dc.b 'You chose '
  44. st_8: dc.b '.',0 ;8
  45.  dc.b 'Error - requester won''t fit or out of memory',0 ;9
  46.  dc.b 'Error: Can''t load Times/24 font',0 ;10
  47.  dc.b 'Here is some help:',0 ;11
  48.  dc.b 'Click one of the boxes to choose',0 ;12
  49.  dc.b 'Or, press the Function key in the box',0 ;13
  50.  
  51.  ds.w 0
  52.  
  53. * program to test TLReqchoose
  54. Program:
  55.  TLwindow0                 ;open a window
  56.  beq.s Pr_quit             ;go if can't
  57.  bsr Test                  ;do test of Reqchoose
  58.  TLwclose                  ;close window & screen
  59.  
  60. Pr_quit:
  61.  rts
  62.  
  63.  
  64. * test Reqchoose
  65. Test:
  66.  move.w #12,xxp_Help(a4)   ;set up help - 2 lines from string 12
  67.  move.w #2,xxp_Help+2(a4)
  68.  TLgetfont #st_7,#1,#24    ;put times/24 in font #1
  69.  TLnewfont #1,#1,#1        ;font=1 1=Bold 1=req window
  70.  beq Te_bad1               ;go if can't load Times/24
  71.  TLreqchoose #2,#4         ;header=string 2, 4 choices
  72.  beq Te_bad2               ;go if ok
  73.  clr.l xxp_Help(a4)        ;clear help (now obsolete)
  74.  add.b #'0',d0             ;poke choice (in ASCII) into string 8
  75.  move.b d0,st_8
  76.  moveq #8,d0               ;string 8 if ok
  77.  bra.s Te_rep
  78.  
  79. Te_bad1:
  80.  moveq #10,d0              ;string 10 if can't load font
  81.  bra.s Te_rep
  82.  
  83. Te_bad2:
  84.  moveq #9,d0               ;string 9 if font won't fit / out of mem
  85.  
  86. Te_rep:
  87.  TLstrbuf d0               ;string (8-10) to buffer
  88.  TLreqchoose #0,#0         ;put up requester to acknowledge buffer contents
  89.  rts
  90.